package indi.xielin.start.injector;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.AbstractSqlInjector;
import com.baomidou.mybatisplus.core.injector.methods.SelectList;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import indi.xielin.start.method.DeleteAllMethod;

import java.util.List;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;

/**
 * Sql注入类,需要添加为IOC容器Bean才能生效
 *  @author  xielin
 *  @date  2022/10/16  23:26
 */

//@Component
public class MyInjector3 extends AbstractSqlInjector {
    /**
     *  在这里添加自定义的Sql的AbstractMethod实现类，完成SQL注入.
     *  实现该抽象类,可以自定义方法.但是只有这些自定义方法可以使用.
     *  如果要使用BaseMapper中提供的默认方法,需要继承DefaultSqlInjector.或者在这里有选择添加.
     * @param mapperClass
     * @param tableInfo
     * @return
     */
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
        Stream.Builder<AbstractMethod> builder = Stream.<AbstractMethod>builder().add(new DeleteAllMethod()).add(new SelectList());
        return builder.build().collect(toList());
    }
}
